﻿//#include<stdio.h>
//void /*int*/ test()
//{
//	int x = 18;
//	int y = 19;
//	if (18 == x)//如果写x = 18（x == 18漏掉一个等号），则将18赋值给x，容易造成BUG
//	{
//		printf("%d\n", x);
//	}
//		printf("%d\n", y);
//	    //return x;//return的作用是“返还结果并立即终止函数”
//	    //return y;
//	
//}
//int main()
//{
//	test();
//    //printf("%d", test());
//	return 0;
//}
#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//int main()
//{
//	int num = 0;
//	while (num <= 100)
//	{
//		scanf("%d", &num);
//		if (num % 2 == 1)
//		{
//			printf("%d 是奇数\n",num);
//		}//num++;
//		else
//		{
//			printf("%d 是偶数", num);
//		}
//	}
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int day = 0;
//	scanf("%d", &day);
//	switch (day)//------------------//day必须是整数类型（char、short、int或枚举），或者是能够隐式转换为整数类型的表达式。
//	{
//	case 1://----------------------//case 后只能跟整型常量表达式，不能是浮点数或字符串
//	case 2:
//	case 3:
//	case 4:
//	case 5:
//      printf("weekday\n");
//		break;
//	case 6:
//	case 7:
//		printf("weekend\n");
//		break;
//	default:
//		printf("选择错误");
//		break;
//	}
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int i = 0;
//	while (i <= 10)
//	{
//		i++;
//		if (5 == i)
//		{
//			continue;//continue:跳过本次循环；break永久终止循环
// 
//		}
//		printf("%d ", i);
//	}
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	////int ch = getchar();//getchar:该函数以无符号 char 强制转换为 int 的形式返回读取的字符（用char会导致EOF(-1)与ÿ的ASCII编码冲突），如果到达文件末尾或发生读错误，则返回 EOF（-1）.
//	//int ch = 0;
//	//while ((ch = getchar())!= EOF)
//	//{
//	//	//printf("%c\n", ch);
//	//	putchar(ch);
//	//}
//	char password[20] = { 0 };
//	printf("请输入密码:>");
//	scanf("%s", password);//数组名本来就是一个地址，所以不用取地址
//	printf("请确认密码(Y/N):>");
//	getchar();//只能清除缓存区一个字符
//	int ch = 0;
//	while ((ch = getchar())!= '\n')//清除缓存区
//	{
//		;
//	}
//	int ret = getchar();
//	if ('Y' == ret)//在比较是否相等时字符类型变量和常量都是优先转化为ascll码值后在进行的
//	{
//		printf("YES\n");
//	}
//	else
//	{
//		printf("NO\n");
//	}
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int ch = 0;
//	while ((ch = getchar()) != EOF)
//	{
//		if (ch < '0' || ch>'9')//在比较时字符类型变量和常量都是优先转化为ascll码值后在进行的
//		{
//			continue;
//		}
//		putchar(ch);
//	}
//	return 0;
//}	
//#include<stdio.h>
//int main()
//{
//	int arr[] = { 73,32,99,97,110,32,100,111,32,105,116,33 };
//	int size = sizeof(arr) / sizeof(arr[0]);
//	int i = 0;
//	while (i < size)
//	{
//		printf("%c", arr[i]);
//		i++;
//	}
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int year,month,date = 0;
//	scanf("%4d%2d%2d", &year, &month, &date);//%m:可指定输入域宽
//	printf("year=%4d\n", year);
//	printf("month=%02d\n",month);//%0md:输出数值时指定左面不使用的空位置为0，m为输出位数
//	printf("date=%02d\n",date);
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	printf("printf(\"Hello World!\\n\");\n");
//	printf("cout <<\"Hello World! <<endl;\n");
//	return 0;
//}//------------\:转义字符
//#include<stdio.h>
//int max(int x, int y)
//{
//	if (x < y)
//	{
//		return y;
//	}
//	else
//	{
//		return x;
//	}
//}
//int main()
//{
//	int a, b, c, d,m,n = 0;
//	scanf("%d %d %d %d", &a, &b, &c, &d);
//	m = max(a, b); n = max(c, d);
//	printf("%d", max(m,n));
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int arr[4] = {0};
//	int i = 0;
//	while (i < 4)
//	{
//		scanf("%d",&arr[i]);
//		i++;
//	}
//	int max = arr[0];
//	i = 1;
//	while (i < 4)
//	{
//		if (max < arr[i])
//		{
//			max = arr[i];
//		}
//		i++;
//	}
//	printf("%d", max);
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int i = 1;
//	int n, max = 0;
//	scanf("%d", &max);
//	while (i < 4)
//	{
//		scanf("%d", &n);
//		if (n > max)
//		{
//			max = n;
//		}
//		i++;
//	}
//	printf("%d", max);
//	return 0;
//}
//for循环的判断部分省略意味着判断会恒成立（死循环）,相当于while(1).
//#include<stdio.h>
//int main()
//{
//	for (int i = 0; i < 10; i++)
//	{
//		for (int j = 0; j < 10; j++)
//		{
//			printf("坚持\n");
//		}
//	}
//	return 0;//100个坚持
//}
//#include<stdio.h>//-------------------------do while:先执行，后判断.
//int main()
//{
//	int i = 0;
//	do
//	{
//		printf("坚持\n");
//		i++;
//	}
//	while (i < 10);
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int m = 1;
//	int sum = 0;
//	for (int i =1;i <= 10;i++)
//	{
//		for (int j = 1; j <= i; j++)
//		{
//			m = m * j;
//		}
//		sum = sum + m;
//		m = 1;
//	}
//	printf("%d",sum);
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//    int m = 1;
//    int sum = 0;
//    for (int i = 1; i <= 10; i++)
//    {
//        m = m * i;  // 直接在上一次阶乘的基础上乘以当前i
//        sum = sum + m;
//    }
//    printf("%d", sum);
//    return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int i,n = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);//----------sizeof(arr) 计算整个数组所占用的内存总字节数;sizeof(arr[0]) 计算数组中单个元素所占用的字节数
//	scanf("%d", &n);
//	for (i = 0; i < sz; i++)
//	{
//		if (arr[i] == n)
//		{
//			printf("%d", i);
//		}
//	}
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 };
//	int n = 0;
//	scanf("%d", &n);
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int min = 0;
//	int max = sz - 1;
//	while(min<=max)
//	{
//		int mid = min + (max - min) / 2;//-----------二分查找/折半查找
//		if (arr[mid] < n)
//		{
//			min = mid + 1;
//		}
//		else if (arr[mid] >n)
//		{
//			max = mid - 1;
//		}
//		else
//		{
//			printf("找到了下标为\"%d\"\n", mid);
//			break;
//		}
//	}
//	if (min > max)
//	{
//		printf("找不到\n");
//	}
//	return 0;
//}
//#include<stdio.h>
//#include<string.h>
//#include<Windows.h>
//#include<stdlib.h>
//int main()
//{
//	char arr1[] = "Hold on consistently and persistently!!!";
//	char arr2[] = "########################################";
//	int sz = strlen(arr1);//字符串是特殊的字符数组（有\0）："abc" == {'a','b','c','\0'},strlen用于计算字符串中字符的个数(不包含\0),sizeof() 计算字符数组的长度，包含末尾的 '\0'（如果有\0）
//	printf("%s\n",arr2);
//	for (int i = 0; i <= sz-1-i; i++)
//	{
//		//清空屏幕
//		system("cls");
//		arr2[i] = arr1[i];
//		arr2[sz - 1 - i] = arr1[sz - 1 - i];
//		printf("%s\n", arr2);
//		Sleep(1000);
//	}
//	return 0;
//}
//#include<stdio.h>
//#include<string.h>
//void clear_buffer()
//{
//	int ch = 0;
//	while ((ch = getchar()) != '\n' && ch != EOF)
//	{
//		;
//	}
//}
//int main()
//{
//	char arr1[] = "bb316316";
//	char arr2[9] = { 0 };
//	printf("请输入密码：\n");
//	for (int i = 0; i <= 2; i++)
//	{
//		scanf("%8s",arr2);
//		if (strcmp(arr1, arr2) == 0)//使用strcmp(sting.h)比较字符串，而不是直接用==
//		{
//			printf("登录成功");
//			break;
//		}
//		else
//		{
//			printf("密码不正确，请重新输入：\n");
//		}
//		clear_buffer();
//	}
//	if (strcmp(arr1, arr2) != 0)
//	{
//		printf("密码错误次数过多，程序退出\n");
//	}
//	return 0;
//}
//#include<stdio.h>   // 引入标准输入输出库，用于printf、scanf等函数
//#include<time.h>    // 引入时间库，用于获取当前时间作为随机数种子
//#include<stdlib.h>  // 引入标准库，用于rand()和srand()等随机数相关函数
//void ch()
//{
//    printf("$$$$$$$$$$$$$$$$$$\n");
//    printf("$$$$$$1:play$$$$$$\n");
//    printf("$$$$$$0:exit$$$$$$\n");
//    printf("$$$$$$$$$$$$$$$$$$\n"); 
//}
//void game()
//{
//    int guess = 0;  // 声明变量用于存储玩家输入的猜测值
//    // 生成1~100的随机数：
//    // rand()生成0到RAND_MAX(通常是32767)的随机整数
//    // %100将结果限制在0~99，+1后范围变为1~100
//    int A = rand() % 100 + 1;
//
//    printf("请输入1~100的数：\n");
//    scanf("%3d", &guess);//%3d限制最多3位数字
//
//    int i = 1;
//    for (i = 1; i <= 6; i++)
//    {
//        if (guess == A)
//        {
//            printf("恭喜你，猜对了\n");
//            break;
//        }
//        else if (guess < A)
//        {
//            printf("猜小了，请重新输入：\n");
//            scanf("%3d", &guess);
//        }
//        else if (guess > A)
//        {
//            printf("猜大了，请重新输入：\n");
//            scanf("%3d", &guess);
//        }
//    }
//    if (guess != A)
//    {
//        printf("很遗憾，猜错了,正确答案是%d，游戏结束\n", A);
//    }
//}
//int main()
//{
//    int bool = 0;  //声明变量用于控制游戏循环（0表示退出，1表示继续）
//
//    // 设置随机数种子：
//    // time(NULL)获取当前系统时间（秒数），转换为无符号整数作为种子
//    // srand()初始化随机数生成器，确保每次运行游戏生成不同的随机数序列
//    srand((unsigned int)time(NULL));
//    do
//    {
//        ch();
//        printf("请选择（0/1）：\n");
//        scanf("%d", &bool);
//        switch (bool)
//        {
//        case 1:
//            printf("请做好准备\n");
//            game();
//            break;
//        case 0:
//            printf("退出游戏\n");
//            break;
//        default:
//            printf("选择错误\n");
//            break;
//        }
//    } while (bool);  // 当bool为1时继续循环，为0时退出循环
//
//    return 0; 
//}
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	char input[20] = { 0 };
//	system("shutdown -s -t 120");
//again:
//	printf("请输入{strcmp,system}\n");
//	scanf("%s",input);
//	if (strcmp(input, "{strcmp,system}") == 0)
//	{
//		system("shutdown -a");
//	}
//	else
//	{
//		printf("输入错误\n");
//		goto again;
//	}
//	return 0;
//}
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	char arr1[] ="abcdef";
//	char arr2[20] = { 0 };
//	strcpy(arr2, arr1);
//	printf("%s\n", arr2);
//	memset(arr2,'$', sizeof(arr2));
//	arr2[19] = '\0';
//	printf("%s\n", arr2);
//	memset(arr1 + 2, '$',2);
//	printf("%s\n", arr1);
//	return 0;
//}
//#include<stdio.h>
//void huan(int* x, int* y)
////若函数仅使用参数的值，不修改原始变量 → 用值传递.若函数需要修改原始变量，或传递大型数据以提高效率 → 用指针传递
////当形参传给形参的时候，形参是实参的一份临时拷贝，占据独立的内存，对形参的修改不会影响实参
//{
//	int z = 0;
//	z = *x; //解引用，修改指针指向的内存
//	*x = *y;
//	*y = z;
//}
//int main()
//{
//	int a, b = 0;
//	scanf("%d %d", &a, &b);
//	huan(&a, &b);
//	printf("%d %d",a,b);
//	return 0;
//}
//#include<stdio.h>
//#include<math.h>
//void su(int x)
//{
//	if (x < 2 || x % 2 == 0)
//	{
//		printf("%d不是素数\n", x);
//		return;
//	}
//	if (x == 2)
//	{
//		printf("%d是素数\n", x);
//		return;
//	}
//	for (int i = 3; i <= sqrt(x); i+=2)
//	{
//		if (x % i == 0)
//		{
//			printf("%d不是素数\n", x);
//			return;
//		}
//	}
//	printf("%d是素数\n", x);
//}
//int main()
//{
//	int a = 0;
//	//scanf("%d", &a);
//	for (int i = 100; i <= 200; i++)
//	{
//		su(i);
//	}
//	return 0;
//}
//#include<stdio.h>
//int run(int x)//---------------函数功能尽量单一，高内聚低耦合
//{
//	if (((x % 4 == 0) && (x % 100 != 0)) || (x % 400 == 0))
//	{
//		return 1;
//	}
//	else
//	{
//		return 0;
//	}
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	if (run(n))
//	{
//		printf("%d是闰年", n);
//	}
//	else
//	{
//		printf("%d不是闰年", n);
//	}
//	return 0;
//}
//#include<stdio.h>
////-------------------------------数组传参本质是指针传递（传递首元素地址）
////-------------------------------必须额外传递数组长度，否则无法正确遍历
////-------------------------------函数内修改数组元素会影响原数组
////-------------------------------形式上可以用int arr[]或int* arr接收，二者等价
//int er(int x,int* arr,int len)
// {
//	int min = 0;
//	int max = len - 1;
//	while (min <= max)
//	{
//		int mid = min + (max - min) / 2;
//		if (arr[mid] < x)
//		{
//			min = mid + 1;
//		}
//		else if (arr[mid] > x)
//		{
//			max = mid - 1;
//		}
//		else
//		{
//			return mid;
//		}
//	}
//	return -1;
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9 };
//	int a = 0;
//	int len = sizeof(arr) / sizeof(arr[0]);
//	scanf("%d", &a);
//	er(a, arr, len);
//	printf("%d是所求数组下标", er(a, arr, len));
//	return 0;
//}
//#include<stdio.h>
//void add(int* x)
//{
//	*x += 1;
//}
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//	for (int i = 0; i < 7; i++)
//	{
//		add(&num);
//		printf("%d %d\n", i,num);
//	}
//	return 0;
//}
//#include<stdio.h>
//
//int main()
//{
//	//链式访问:函数需要有返回值
//	printf("%d\n", strlen("abcdef"));
//	printf("%d\n", printf("%d", printf("%d", 43)));
//	//printf返回字符的个数
//	return 0;
//}
//int main(void)//--------void:明确说明main不需要参数
//{
//	return 0;
//}
////main函数实际上有3个参数
//int main(int argc, char* argv[], char* envp[])
//{
//
//	return 0;
//}
//#include<stdio.h>
////函数声明
//int add(int, int);
//int main()
//{
//	int a = 0;
//	int b = 0;
//	printf("%d", add(a, b));
//	return 0;
//}
////函数定义
//int add(int x, int y)
//{
//	return x + y;
//}
